package com.newtouch.bxzs.common.base.util;

import cn.hutool.core.date.DateUtil;
import com.newtouch.bxzs.common.base.BaseException;

import java.util.Date;

/**
 * 校验时间工具类
 *
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2020/12/29 14:20</td>
 * <td>Amour</td>
 * <td>Create</td>
 * </tr>
 * </table>
 *
 * @author Amour
 * @version 1.0.0
 * @since 1.0.0
 */
public class CheckPublishDateUtils {
    /**
     * 校验时间
     */
    public static void checkDate(Date publishTime, Date revokeTime, Integer maxPublishTime, String maxRevokeTime) {
        Date date = new Date();
        /* 不能晚于2050-01-01(可配置),不可早于当前时间*/
        if (revokeTime != null) {
            if (DateUtil.parse(maxRevokeTime).before(DateUtil.date(revokeTime))
                    || DateUtil.date(revokeTime).before(date)) {
                throw new BaseException("-1", "撤销时间设置不合要求");
            }
        }
        if (publishTime != null) {
            if (/* 发布时间只能介于当前时间~当前时间+7（可配置）*/
                    DateUtil.date(publishTime).before(date)
                            || DateUtil.offsetDay(date, maxPublishTime).before(DateUtil.date(publishTime))) {
                throw new BaseException("-1", "发布时间设置不合要求");
            }
        }
        if(publishTime != null &&revokeTime != null){
            /*撤销时间必须晚于发布时间*/
            if (DateUtil.date(revokeTime).before(DateUtil.date(publishTime))) {
                throw new BaseException("-1", "发布时间和撤销时间设置不合要求");
            }
        }
    }
}
